package com.inspectortime.service;

import java.util.List;
import java.util.Set;

public interface ZipCodeSearchService {

	double findDistanceInMiles(String zipCodeA, String zipCodeB);

	/**
	 * Looks up a zip code by string zip code
	 * @param zipCode
	 * @return info object, or null if not found
	 */
	ZipCodeInfo lookupZipCode(String zipCode);

	/**
	 * Finds nearby zip codes
	 * 
	 * @param zipCode
	 *            The 5-digit "home" zip code
	 * @param radiusInMiles
	 *            The radius to search. Note that results are limited to 500 zip
	 *            codes so any radius above 80 miles or so will not return all
	 *            nearby zip codes.
	 * @return
	 */
	List<ZipCodeInfo> findNearbyZipCodes(String zipCode, int radiusInMiles);

	
	/**
	 * Finds nearby States that are within radiusInMiles from the provided zip code
	 * 
	 * @param zipCode
	 *            The 5-digit "home" zip code
	 * @param radiusInMiles
	 *            The radius to search. Note that results are limited to 500 zip
	 *            codes so any radius above 80 miles or so will not return all
	 *            nearby zip codes.
	 * @return
	 */
	Set<String> findStatesByZipCodeRadiusInMiles(String zipCode, int radiusInMiles);

	
	
}